In data processing systems a data storage device such as a magnetic disk file is frequently coupled via a channel to a central processing unit (CPU) to provide stored data to and to receive for storage data from the CPU. In a common system of this type the disk file is coupled to the channel through a controller and a director. The director responds to channel command words (CCWs) communicated over the channel from the CPU by temporarily storing and communicating data and by issuing commands to the controller. The commands control storage and communication of data within the controller and effect desired operations within the magnetic disk file. The director, controller and disk file together comprise a subsystem of the data processing system with its included CPU and channel.
Cyclic storage devices such as those employing magnetic disks or drums include one or more transducers, each of which is capable of addressing one or more essentially endless tracks which periodically repeat as a result of relative motion of the disk, drum or other storage medium relative to the transducer. Each track is typically organized so as to comprise a succession of sectors along the length thereof. A sector which includes one and sometimes two records is headed by a three byte address marker which identifies the beginning of the sector. Each record is begun by a count field headed by a sync byte, ending with several bytes of error correction code (ECC) and including a series of bytes therebetween which identify the record location in terms of disk and track or cylinder. The count field within each record is sometimes followed by a key field containing user data and like information and which is spaced apart from the count field by a short gap. Finally, each record contains a data field downstream of the count field and the key field where present. The data field begins with a sync byte, ends with ECC bytes and has various bytes of data therebetween.
As a transducer moves along a track so as to address successive ones of the records in conjunction with execution of various channel command words, orientation of the transducer to the desired records is maintained by processing the data comprising the beginning of each record in a selected way. First of all, the address marker is located. Following that, the sync byte at the beginning of the count field is located. Upon location of the sync byte, the controller sends the count field to the director which compares portions of the data thereof with channel data. At the end of transfer the controller provides certain ending conditions indicating such things as whether the count field was sent in timely fashion for the comparison and whether an error was detected in the count field. Thereafter, the transducer continues through the key field if one is present and then the data field by locating the sync byte at the beginning of each field, reading or writing the various bytes within the field and then noting the ECC bytes at the end of the field.
As the transducer moves relative to the track and the system executes various channel command words, errors are occasionally detected. The detected errors may be of different types and include those in which the data read from a particular field is determined to be in error and those in which for reasons of timing data from a given field could not be read, compared or otherwise processed in time to provide complete execution of the channel command word. As errors occur they may be classified in terms of whether they are retriable or not. If they are retriable the subsystem is typically upcoupled from the channel shortly after detection of the error and is then again coupled to the channel during the next occurrence of the error location in the cyclic movement of the track relative to the transducer in an attempt to reorient and successfully execute the channel command.
Where a retriable error consists of data from a field which is timely read but determined to be in error the error correction code (ECC) or other measures may be employed during the next revolution in an attempt to correct the error upon reorientation. In other instances, retriable errors result from the inability of the subsystem to detect a particular byte or groups of bytes or to timely compare or transfer a group of bytes. A common error of this type, referred to as Command Overrun, occurs when the subsystem is unable to timely complete the execution of a channel command word. Thus, a typical Command Overrun may occur where the subsystem is unable to transfer a count field to the director so that a successful comparison with channel data can be timely made. When such a condition occurs data transfer is not begun. Instead the subsystem attempts to reorient and achieve a successful comparison. Another common type of error which may occur prior to data transfer is when a sync byte is not detected. This condition is commonly referred to as Sync Byte Missing. Common retriable errors which occur during data transfer include Data Overrun and Data Check. Data Overrun typically occurs where reading or writing of data within a given field cannot be completed in time. Data Check is an error condition usually detected at the end of data transfer.
One successful scheme for providing reorientation in response to retriable errors in a data storage subsystem is described in U.S. Pat. No. 3,725,861 of Hancock, issued Apr. 3, 1973 and commonly assigned with the present application. In the Hancock arrangement sectors along each track are successively numbered such that the sector number can be detected and temporarily stored as the count field of one or more records in the sector are processed. Upon detection of an error the sector number identifying the sector containing the error is saved. The subsystem then advances to the next occurrence of the sector containing the error under the control of a one revolution counter. The particular location of the error within the sector is then determined using a phase locked oscillator which creates a timing window.
The arrangement described in Hancock operates in accurate and successful fashion for most applications thereof. However, there are certain applications or situations in which problems may arise. One such problem stems from the length of the sectors. While most sectors typically include only one record, some may include two records. Complex apparatus may therefore be required to more accurately identify the exact location of an error to prevent the subsystem from erroneously reorienting to the wrong record within a noted sector. A more serious problem, known as "nested error", may occur in situations where the detected error occurs in the latter part of a record such as in the data field and upon reorientation to the beginning of the record a different error is detected before the original error is reached. For example, if an error is detected in the data field of a given record, the sector number of the count field of this given record is stored and the subsystem is reoriented to the beginning of the sector. If the subsystem then detects a different error in the address marker or the count field which results in a Command Overrun, a Data Overrun or the like, the later error must be corrected before the subsystem can advance to the data field where the eariler error was detected. Another serious problem may arise such as where at the conclusion of processing a count field it is determined that there is a Command Overrun or a Sync Byte Missing prior to detection of the sync byte at the beginning of the next field. Because the Hancock arrangement records the sector number at the sync byte of a count field, the number of the sector being recorded may be that where the previous count field resides instead of the number of the sector encompassing the field in which the error occurred. The subsystem then reorients to the count field of a record prior to the one in which the error occurred. This problem is even further complicated if a different error is detected before again detecting the original error.